package cn.tedu.throwablex;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.InputMismatchException;
import java.util.Scanner;

public class ExceptionDemo1 {
    public static void main(String[] args){
//        readFile(null);

        //try catch处理异常
//        try {
//            new SimpleDateFormat("yyyy-MM-dd").parse("2020-10");
//            System.out.println("try");
//        }catch (Exception e){
//            System.out.println("catch");
//            //处理异常--打印堆栈信息
//            e.printStackTrace();
//        }
//        //不会影响以下代码的执行
//        System.out.println("hello");

        try {
            readFile("k:\\a.txt");
        } catch (IOException e){
            e.printStackTrace();
        }  catch (NullPointerException e){
            e.printStackTrace();
        } /*catch (PFNotFoundException e) {
            e.printStackTrace();
        }*/
//        try {
//            readFile("g:\\a.txt");
//        } catch (NullPointerException|IOException e) {
//            e.printStackTrace();
//        }
        //Scanner
//        Scanner sc = new Scanner(System.in);
//        try{
//            int num = sc.nextInt();//异常
//            //sc.close();//如果上一行抛出异常 则当前代码无法执行
//            System.out.println(num);
//        }catch (InputMismatchException e){
//           // sc.close();
//            e.printStackTrace();
//        }finally {//finally代码块 跟在try catch语句后
//            System.out.println("finally");
//            sc.close();//无论try是否抛出异常都会把Scanner关闭
//        }
//        System.out.println("hello World");
    }
    public static void readFile(String path) throws NullPointerException, IOException, PFNotFoundException {
        //产生的是运行时异常 可以不处理
        if(path==null){
            throw new NullPointerException("文件路径为空！");
        }
        //获取盘符来判断盘符是否存在
        char c = path.charAt(0);//D:\\code E
        if(c!='C'&&c!='c'&&c!='D'&&c!='d'){
//            throw new FileNotFoundException("盘符不正确！");
            throw new PFNotFoundException("盘符不正确！");
        }
        boolean flag = true;//true可以正常读取
        if(!flag){
            throw new IOException("文件不能正常读取");
        }
        System.out.println("hello");
    }
}
//编译时异常
//class PFNotFoundException extends  Exception{
//    public PFNotFoundException(){}
//    //有参构造 无参构造
//    public PFNotFoundException(String message){
//        super(message);
//    }
//}
//运行时异常
class PFNotFoundException extends  RuntimeException{
    public PFNotFoundException(){}
    //有参构造 无参构造
    public PFNotFoundException(String message){
        super(message);
    }
}

